package com.redpack.redpost.util.Servlet;

import java.io.IOException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.redpack.redpost.util.dao.*;
import com.redpack.redpost.util.to.ArchivoArribo;
import com.redpack.redpost.util.to.MultipiezaArriboTo;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SavePaqueteArribo
 */
public class SavePaqueteArribo extends HttpServlet implements javax.servlet.Servlet{
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SavePaqueteArribo() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String respuesta = "";
		String cve_arribo = "";
		String largo = ""; 
		String ancho = ""; 
		String alto = ""; 
		String peso = "";
		String tipo_conver = "";
		
		String largo_dim_paq_pulg; 
		String ancho_dim_paq_pulg; 
		String alto_dim_paq_pulg; 
		String peso_real_kg; 
		String peso_real_lb; 
		String peso_volumetrico_kg; 
		String peso_volumetrico_lb; 
		
		String Html = "";
		
		boolean isSaveBd = false;

		cve_arribo = request.getParameter("cve_arribo");
		largo = request.getParameter("largo");
		ancho = request.getParameter("ancho");
		alto = request.getParameter("alto");
		peso = request.getParameter("peso");
		tipo_conver = request.getParameter("tipo_conver");
		
		try 
		{
	        if(cve_arribo != "")
	  	  	{
	        	if(isNumeric(cve_arribo) && isNumeric(tipo_conver))
	        	{
	        		if(isFloat(largo) && isFloat(ancho) && isFloat(alto) && isFloat(peso))
	        		{
	        			
	        		
	        			
		        	MultipiezaArriboTo  _MultipiezaArribo = new MultipiezaArriboTo();
		        	
		        	
		        	float _largoCm = 0;
		        	float _anchoCm = 0;
		        	float _altoCm = 0;
		        	float _pesoKg = 0;
		        	float _pesoVolKg = 0;
		        	
		        	float _largoPg = 0;
		        	float _anchoPg = 0;
		        	float _altoPg = 0;
		        	float _pesolb = 0;
		        	float _pesoVolpg = 0;
		        	
		        	//float _pesoVolumetricoCm = ObtenerPesoVolumetrico(largo,ancho,alto);
		        	
		        	
		        	// (1) Libras
		        	// (2) Centimetros
		        	if(Integer.parseInt(tipo_conver) == 1){
		        		
		        		_largoCm = ConversionPulgadasCentimetros(largo);
			        	_anchoCm = ConversionPulgadasCentimetros(ancho);
			        	_altoCm = ConversionPulgadasCentimetros(alto);
			        	_pesoKg = ConversionLibrasKilos(peso);
			        	_pesoVolKg = ObtenerPesoVolumetrico(_largoCm,_anchoCm,_altoCm);
			        	
			        	_largoPg = Obtener3Decimales(largo);
			            _anchoPg = Obtener3Decimales(ancho);
			        	_altoPg = Obtener3Decimales(alto);
			        	_pesolb = Obtener3Decimales(peso);
			        	_pesoVolpg = ObtenerPesoVolumetrico(_largoCm,_anchoCm,_altoCm);
			        	
			        	
			        	_MultipiezaArribo.setCve_arribo(Integer.parseInt(cve_arribo));
			        	_MultipiezaArribo.setLargo_dim_paq_cm(_largoCm);
			        	_MultipiezaArribo.setAncho_dim_paq_cm(_anchoCm);
						_MultipiezaArribo.setAlto_dim_paq_cm(_altoCm);
						_MultipiezaArribo.setLargo_dim_paq_pulg(_largoPg);
						_MultipiezaArribo.setAncho_dim_paq_pulg(_anchoPg);
						_MultipiezaArribo.setAlto_dim_paq_pulg(_altoPg);
						_MultipiezaArribo.setPeso_real_kg(_pesoKg);
						_MultipiezaArribo.setPeso_real_lb(_pesolb);
						_MultipiezaArribo.setPeso_volumetrico_kg(_pesoVolKg);
						_MultipiezaArribo.setPeso_volumetrico_lb(_pesoVolpg);
						
		        	}
		        	else{
		        		
		        		_largoPg = ConversionCentimetrosPulgadas(largo);
		        		_anchoPg = ConversionCentimetrosPulgadas(ancho);
		        		_altoPg = ConversionCentimetrosPulgadas(alto);
		        		_pesolb = ConversionKilosLibras(peso);
		        		_pesoVolpg = ObtenerPesoVolumetrico(_largoPg,_anchoPg,_altoPg);
		        		
		        		_largoCm = Obtener3Decimales(largo);
		        		_anchoCm = Obtener3Decimales(ancho);
		        		_altoCm = Obtener3Decimales(alto);
		        		_pesoKg = Obtener3Decimales(peso);
		        		_pesoVolKg = ObtenerPesoVolumetrico(_largoCm,_anchoCm,_altoCm);
			     
		        		
		        		_MultipiezaArribo.setCve_arribo(Integer.parseInt(cve_arribo));
			        	_MultipiezaArribo.setLargo_dim_paq_cm(_largoCm);
			        	_MultipiezaArribo.setAncho_dim_paq_cm(_anchoCm);
						_MultipiezaArribo.setAlto_dim_paq_cm(_altoCm);
						_MultipiezaArribo.setLargo_dim_paq_pulg(_largoPg);
						_MultipiezaArribo.setAncho_dim_paq_pulg(_anchoPg);
						_MultipiezaArribo.setAlto_dim_paq_pulg(_altoPg);
						_MultipiezaArribo.setPeso_real_kg(_pesoKg);
						_MultipiezaArribo.setPeso_real_lb(_pesolb);
						_MultipiezaArribo.setPeso_volumetrico_kg(_pesoVolKg);
						_MultipiezaArribo.setPeso_volumetrico_lb(_pesoVolpg);
		        	}
		        		
	
	  			    isSaveBd = MultipiezaArriboDao.savePaqueteArribo(_MultipiezaArribo);
	  			  
	  		  		  if(isSaveBd)
			  		  {
			  			  List _PaqueteArribo = new ArrayList(); 
			  			_PaqueteArribo = MultipiezaArriboDao.getPaqueteArribo(Integer.parseInt(cve_arribo));
	
			  			  	  Html +="<table id='PaquetesArribo' class='table_datosRed'>";
				        	  Html +="<thead>";
				        	  Html +="<tr>";
				        	  Html +="<th>Largo</th>";
				        	  Html +="<th>Ancho</th>";
				        	  Html +="<th>Alto</th>";
				        	  Html +="<th>Peso Volumetrico</th>";
				        	  Html +="<th>Peso Real</th>";
				        	  Html +="<th></th>";
				        	  Html +="</tr>";     
				        	  Html +="</thead>";
				        	  Html +="<tbody>";  
				        	
			  			  java.util.Iterator iter2 = _PaqueteArribo.iterator();
			  		        while (iter2.hasNext()) {
			  		        	MultipiezaArriboTo _item = (MultipiezaArriboTo) iter2.next();
	 
			      				Html +="<tr class='body_table'>";
				        		Html +="<td>"+_item.getLargo_dim_paq_cm()+"</td>";
			  		        	Html +="<td>"+_item.getAncho_dim_paq_cm()+"</td>";
			  		        	Html +="<td>"+_item.getAlto_dim_paq_cm()+"</td>";
			  		        	Html +="<td>"+_item.getPeso_volumetrico_kg()+"</td>";
			  		        	Html +="<td>"+_item.getPeso_real_kg()+"</td>";
			  		        	
			  		        	Html +="<td><img   src='../img/icoError.png'  onclick='EliminarPaqueteArribo("+_item.getCve_pieza()+","+_item.getCve_arribo()+",$(this))' /></td>";
			  		        	Html +="</tr>";
			  		        	
			  		        	
			  		        }
			  		        
			  		        Html +="</tbody>";
					        Html +="</table>";
			  		  }
	        		}
		  	  	}
	  	  	}
  		  respuesta = Html;
  		  
  		  
		} 
		catch (Exception ex) 
		{
         ex.printStackTrace();
         response.getWriter().write(ex.toString());  
         respuesta = ex.toString();
         //System.out.println(ex);
     }
        response.getWriter().write(respuesta);  
	}
	
	public float Obtener3Decimales(String numero){
		float _final = 0;
		
		try
		{
			float valor = 0;
			
			valor = Float.parseFloat(numero);
			_final = valor;
			/*
			DecimalFormat _valor = new DecimalFormat();
			_valor.setMaximumFractionDigits(3);
			_final = Float.parseFloat(_valor.format(valor));
			*/
		} 
		catch (Exception ex) 
		{
         ex.printStackTrace();
         //System.out.println(ex);
		}
		
		return _final;
	}
	
	public float ObtenerPesoVolumetrico(float _largo,float _ancho,float _alto){
		float _final = 0;
		
		try
		{
			float _peso_volumetrico = 0;
			
			
			_peso_volumetrico = (_largo * _ancho * _alto)/ 6000;
			
			
		    double _mul = 0;
		    
		    _mul= (_largo * _ancho * _alto)/ 6000;
		    _final = (float) _mul;
		    
			
			/*
			DecimalFormat _valor = new DecimalFormat();
			_valor.setMaximumFractionDigits(3);
			_final = Float.parseFloat(_valor.format(_peso_volumetrico));
			*/
		
		} 
		catch (Exception ex) 
		{
	     ex.printStackTrace();
	     //System.out.println(ex);
		}
		
		return _final;
	}
	
	
	public float ConversionPulgadasCentimetros(String valor){
		float _final = 0;
		
		try
		{
		    float f = Float.parseFloat(valor);
		    double _mul = 0;
		    
		    _mul= f * 2.54;
		    _final = (float) _mul;
			
		    
		    /*
			DecimalFormat _valor = new DecimalFormat();
			_valor.setMaximumFractionDigits(3);
			_final = Double.parseDouble(_valor.format(pulgadas));	
			*/
			
		    /*
			NumberFormat nf = new DecimalFormat();
			 nf.setMaximumFractionDigits(3);
			 nf.setMinimumFractionDigits(3);
			 String formattedNum = nf.format(pulgadas);
			 _final =  Float.parseFloat(formattedNum);
			 */
	} 
	catch (Exception ex) 
	{
		ex.printStackTrace();
		//System.out.println(ex);
	}
		return _final;
	}
	
	public float ConversionCentimetrosPulgadas(String valor){
		float _final = 0;
	
		try
		{
			/*
			 double Centimetros = 0;
			 Centimetros =  Float.parseFloat(valor) / 2.54;
		     float _final = 0;
			 */
		    float f = Float.parseFloat(valor);
		    double Centimetros = 0;
		    

		    Centimetros = f / 2.54;
		    _final = (float) Centimetros;
			
			
		}
		catch (Exception ex) 
		{
			ex.printStackTrace();
			//System.out.println(ex);
		}
			return _final;
		
	}
	
	public float ConversionKilosLibras(String valor){
		float _final = 0;
		
		try
		{
		//double libras = 0;
		//libras =  (Float.parseFloat(valor) * 1000) / 453.59;
	    //float _final = 0;
	    
	    /*
		DecimalFormat _valor = new DecimalFormat();
		_valor.setMaximumFractionDigits(3);
		_final = Float.parseFloat(_valor.format(libras));
		*/
		
		    double libras =  (Float.parseFloat(valor) * 1000) / 453.59;
		    
		    _final = (float) libras;
	    
		}
		catch (Exception ex) 
		{
			ex.printStackTrace();
			//System.out.println(ex);
		}
		return _final;
	}
	
	public float ConversionLibrasKilos(String valor){
		float _final = 0;
		
		try
		{
		//double libras = 0;
		//libras =  (Float.parseFloat(valor) * 453.59 ) / 1000 ;
	    //float _final = 0;
	    
	    /*
		DecimalFormat _valor = new DecimalFormat();
		_valor.setMaximumFractionDigits(3);
		_final = Float.parseFloat(_valor.format(libras));
		*/
	    
	    
	    double libras =  (Float.parseFloat(valor) * 453.59 ) / 1000 ;
	    _final = (float) libras;

		
	}
	catch (Exception ex) 
	{
		ex.printStackTrace();
		//System.out.println(ex);
	}
	return _final;
	}
	
	
	private static boolean isNumeric(String cadena){
	    try 
	    {
		    Integer.parseInt(cadena);
		    return true;
	    } 
	    catch (NumberFormatException nfe){
	    	return false;
	    }
	    
	}
	
	
	private static boolean isFloat(String cadena){
	    try 
	    {
		    Float.parseFloat(cadena);
		    return true;
	    } 
	    catch (NumberFormatException nfe){
	    	return false;
	    }
	    
	}
	
	
}



